package ar.edu.utn.frba.dds.tp.tests.vuelos;

import static org.junit.Assert.assertTrue;

import java.math.BigDecimal;

import junit.framework.Assert;

import org.joda.time.LocalDate;
import org.joda.time.LocalTime;
import org.junit.Before;
import org.junit.Test;

import ar.edu.utn.frba.dds.tp.code.Asientos.AsientoDeVuelo;
import ar.edu.utn.frba.dds.tp.code.Asientos.ClaseAsiento;
import ar.edu.utn.frba.dds.tp.code.Asientos.EstadoAsiento;
import ar.edu.utn.frba.dds.tp.code.Asientos.UbicacionAsiento;
import ar.edu.utn.frba.dds.tp.code.adapter.LanchitaAdapter;
import ar.edu.utn.frba.dds.tp.code.vuelos.Aerolinea;
import ar.edu.utn.frba.dds.tp.code.vuelos.Vuelo;

public class VueloTest {

	Aerolinea lanchita = new LanchitaAdapter();
	Vuelo vuelo = new Vuelo("1102010201012201", "BA", "LA", new LocalDate(2012,
			10, 10).toDate(), new LocalDate(2012, 10, 11).toDate(),
			new LocalTime(10, 0), new LocalTime(2, 10));
	AsientoDeVuelo asientoDePrimeraPasilloSuperOferta;
	AsientoDeVuelo asientoEjecutivoVentanaNoSuperOferta;

	@Before
	public void setUp() {
		vuelo.setAerolinea(lanchita);

		asientoDePrimeraPasilloSuperOferta = new AsientoDeVuelo(1,
				new BigDecimal("101"), ClaseAsiento.PRIMERA,
				UbicacionAsiento.PASILLO, EstadoAsiento.DISPONIBLE);
		asientoDePrimeraPasilloSuperOferta.setVueloYCodigo(vuelo);

		asientoEjecutivoVentanaNoSuperOferta = new AsientoDeVuelo(10,
				new BigDecimal("99999"), ClaseAsiento.EJECUTIVA,
				UbicacionAsiento.VENTANA, EstadoAsiento.DISPONIBLE);
		asientoEjecutivoVentanaNoSuperOferta.setVueloYCodigo(vuelo);

		vuelo.agregarAsiento(asientoEjecutivoVentanaNoSuperOferta);
		vuelo.agregarAsiento(asientoDePrimeraPasilloSuperOferta);
	}

	@Test
	public void testIncrementaElPrecioDelAsientoDebidoAlImpuesto() {
		assertTrue(vuelo.getPrecioAsiento(asientoDePrimeraPasilloSuperOferta)
				.compareTo(asientoDePrimeraPasilloSuperOferta.getPrecio()) > 0);
	}

	@Test
	public void testVueloTieneAsientosLibres() {
		Assert.assertTrue(vuelo.tieneAsientosLibres());
	}
}
